home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / sound / ry30ed / src / ryed.c < prev    next >
C/C++ Source or Header  |  1999-06-14  |  86KB  |  1,983 lines

  1. // RY30 voice editor, (c) 1998 G. Jones
  2.  
  3. #include "classmate.h"
  4. #include "waves.h"
  5.  
  6. #include <devices/serial.h>
  7.  
  8. #include <stdlib.h>
  9. #include <exec/types.h>
  10. #include <proto/asl.h>
  11. #include <time.h>
  12.  
  13. int main(int argc, char **argv);
  14. void close_all(void);
  15. int openserial(char *devicename);
  16. void closeserial(void);
  17. BOOL sendsysex(char *packet);
  18. void write(int param);
  19. void setindCH(int display, char *string);
  20. void assign(char *dest, int src, int pos);
  21. void dump(struct RYVoice *voice, BOOL save);
  22. void setsliders(struct RYVoice *voice);
  23. void initvoice(struct RYVoice *voice[], int n);
  24. void randomsound(struct RYVoice *voice[], int voic, BOOL filter, BOOL pitch, BOOL decay_pan, BOOL wave, int osc);
  25. int rnd_num(int max);
  26. BOOL  reqFile(struct RYVoice *voice);
  27. unsigned short int updcrc(unsigned short int,int,unsigned short int);
  28.  
  29. struct timeval Time;
  30.  
  31.  
  32. struct MsgPort  *SerialMP;         /* Message port pointer */
  33. struct IOExtSer *SerialIO;         /* I/O request pointer */
  34.  
  35. unsigned short int crc16;
  36.  
  37. struct Node *node;
  38. char *nodename;
  39.  
  40. BOOL osc1=TRUE;
  41. BOOL osc2=TRUE;
  42. int do_osc = 3;
  43.  
  44. UBYTE checksum;
  45. int voic=0;
  46.  
  47. struct TagItem frtags[] =
  48. {
  49.     ASLFR_TitleText,       (ULONG)"Save Sys Ex",
  50.     ASLFR_InitialLeftEdge,     400,
  51.     ASLFR_InitialTopEdge,     300,
  52.     ASLFR_InitialWidth,      250,
  53.     ASLFR_InitialHeight,      400,
  54.     ASLFR_DoSaveMode, TRUE,
  55.  
  56.     ASLFR_PositiveText,     (ULONG)"Save",
  57.     ASLFR_NegativeText, (ULONG)"Cancel",
  58.     ASLFR_InitialFile,       (ULONG)"voice.syx",
  59.     ASLFR_InitialDrawer,        (ULONG)"ram:",
  60.     TAG_DONE
  61. };
  62.  
  63. char d_header[]=
  64. {
  65.         0xF0, 0x43, 0x00, 0x7A, 0x00, 0x76
  66. };
  67.  
  68. char id[]=
  69. {
  70.         'L','M',' ',' ','0','0','1','7',' ',' ',
  71.         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  72.         0x00, 0x00, 0x00, 0x00
  73. };
  74.  
  75. struct RYVoice //=
  76. {
  77.     int src;
  78.     int dest;
  79.     int level;
  80.  
  81.     int peglevel;
  82.     int pegrate;
  83.  
  84.     int output;
  85.     int indlevel;
  86.  
  87.     char name[9];
  88.  
  89.     int wave1;
  90.     int wave1level;
  91.     int pan1;
  92.     int pitch1;
  93.     int decay1;
  94.     int filter1;
  95.     int cutoff1;
  96.     int res1;
  97.     int eg1level;
  98.     int eg1rate;
  99.     int sen_level1;
  100.     int sen_pitch1;
  101.     int sen_eg1;
  102.  
  103.     int wave2;
  104.     int wave2level;
  105.     int pan2;
  106.     int pitch2;
  107.     int decay2;
  108.     int filter2;
  109.     int cutoff2;
  110.     int res2;
  111.     int eg2level;
  112.     int eg2rate;
  113.     int sen_level2;
  114.     int sen_pitch2;
  115.     int sen_eg2;
  116.  
  117.     int group;
  118.     BOOL poly;
  119. };
  120.  
  121.  
  122. FILE *voicefile;
  123.  
  124. struct List     C_Filter1_list, R_Filter1_list, CT_Filter1_list, LB_Filter1_list 
  125.         , C_Alternate_list, R_Alternate_list, CT_Alternate_list, LB_Alternate_list 
  126.         , C_Output_list, R_Output_list, CT_Output_list, LB_Output_list, Wavelist,
  127.         Wavelist2
  128.         ;
  129.  
  130. UBYTE *Filter1_str[] = { "THRU", "Low Pass 12", "Low Pass 24", "High Pass 12", "High Pass 24", 
  131.         NULL };
  132. UBYTE *Alternate_str[] = { "OFF", "1", "2", "3", "4", 
  133.         "5", "6", "7", NULL };
  134. UBYTE *Output_str[] = { "Stereo", "Stereo + Indv 1", "Stereo + Indv 2", "Indv 1", "Indv 2",
  135.         "Indv 1 & 2", NULL };
  136.  
  137. struct Screen   *gScreen = NULL;
  138. struct DrawInfo *gDrinfo = NULL;
  139. struct MsgPort  *gApp_port = NULL;
  140. struct Window   *gMain_window = NULL;
  141. struct Gadget   *gMain_Gadgets[ 65 ];
  142. Object          *gWindow_object = NULL;
  143. APTR            gVi;
  144.  
  145. void setind(int display, int level);
  146.  
  147. int main(int argc, char **argv)
  148. {
  149.   struct RYVoice *voice[96];
  150.   int i;
  151.  
  152.   for(i=0; i <96;i++)
  153.   {
  154.     voice[i]=NULL;
  155.   }
  156.   initvoice(voice,0);
  157.  
  158.   openserial("serial.device");
  159.  
  160.   gScreen = LockPubScreen( NULL );
  161.   if ( gScreen )
  162.   {
  163.         if (ButtonBase);
  164.         gDrinfo = GetScreenDrawInfo ( gScreen );
  165.         gVi = GetVisualInfo( gScreen, TAG_DONE );
  166.         gApp_port = CreateMsgPort();
  167.  
  168.         NewList(&Wavelist);
  169.         NewList(&Wavelist2);
  170.         NewList(&C_Filter1_list);
  171.         NewList(&R_Filter1_list);
  172.         NewList(&CT_Filter1_list);
  173.         NewList(&LB_Filter1_list);
  174.         MakeChooserList(&C_Filter1_list, Filter1_str);
  175.         MakeRadioList(&R_Filter1_list, Filter1_str);
  176.         MakeClickTabList(&CT_Filter1_list, Filter1_str);
  177.         MakeListBrowserList1(&LB_Filter1_list, Filter1_str);
  178.         MakeListBrowserList1(&Wavelist, Wave_str);
  179.         MakeListBrowserList1(&Wavelist2, Wave_str);
  180.         NewList(&C_Alternate_list);
  181.         NewList(&R_Alternate_list);
  182.         NewList(&CT_Alternate_list);
  183.         NewList(&LB_Alternate_list);
  184.         MakeChooserList(&C_Alternate_list, Alternate_str);
  185.         MakeRadioList(&R_Alternate_list, Alternate_str);
  186.         MakeClickTabList(&CT_Alternate_list, Alternate_str);
  187.         MakeListBrowserList1(&LB_Alternate_list, Alternate_str);
  188.         NewList(&C_Output_list);
  189.         NewList(&R_Output_list);
  190.         NewList(&CT_Output_list);
  191.         NewList(&LB_Output_list);
  192.         MakeChooserList(&C_Output_list, Output_str);
  193.         MakeRadioList(&R_Output_list, Output_str);
  194.         MakeClickTabList(&CT_Output_list, Output_str);
  195.         MakeListBrowserList1(&LB_Output_list, Output_str);
  196.  
  197.         gWindow_object = WindowObject,
  198.                 WA_ScreenTitle, "RY30 Editor",
  199.                 WA_Title, "RY30 Editor v0.5 © G. O. Jones",
  200.                 WA_Left, 0,
  201.                 WA_Top, 0,
  202.                 WA_Height, 300,
  203.                 WA_Width, 600,
  204.                 WA_MinWidth, 150,
  205.                 WA_MaxWidth, 8192,
  206.                 WA_MinHeight, 80,
  207.                 WA_MaxHeight, 8192,
  208.                 WA_InnerWidth, 0,
  209.                 WA_InnerHeight, 0,
  210.                 WA_CustomScreen, gScreen,
  211.                 WINDOW_AppPort, gApp_port,
  212.                 WA_CloseGadget, TRUE,
  213.                 WA_DepthGadget, TRUE,
  214.                 WA_SizeGadget, TRUE,
  215.                 WA_SizeBRight, FALSE,
  216.                 WA_SizeBBottom, TRUE,
  217.                 WA_DragBar, TRUE,
  218.                 WA_NoCareRefresh, TRUE,
  219.                 WA_IDCMP,
  220.                          IDCMP_GADGETDOWN |  IDCMP_GADGETUP |  IDCMP_CLOSEWINDOW | 
  221.                          0, 
  222.                 WINDOW_ParentGroup, VLayoutObject,
  223.                 LAYOUT_DeferLayout, TRUE,
  224.                         LAYOUT_AddChild, LayoutObject,
  225.                                 LAYOUT_DeferLayout, FALSE,
  226.                                 LAYOUT_SpaceOuter, FALSE,
  227.                                 LAYOUT_BottomSpacing, 2,
  228.                                 LAYOUT_TopSpacing, 2,
  229.                                 LAYOUT_LeftSpacing, 2,
  230.                                 LAYOUT_RightSpacing, 2,
  231.                                 LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
  232.                                 LAYOUT_HorizAlignment, LALIGN_LEFT,
  233.                                 LAYOUT_VertAlignment, LALIGN_TOP,
  234.                                 LAYOUT_BevelState, IDS_SELECTED,
  235.                                 LAYOUT_FixedHoriz, TRUE,
  236.                                 LAYOUT_FixedVert, TRUE,
  237.                                 LAYOUT_SpaceInner, TRUE,
  238.  
  239.                                 LAYOUT_AddChild, HGroupObject,
  240.  
  241.                                 LAYOUT_AddChild, gMain_Gadgets[ 54 ] = ScrollerObject,
  242.                                           GA_ID, 54,
  243.                                           GA_RelVerify, TRUE,
  244.                                           GA_TabCycle, TRUE,
  245.                                           SCROLLER_Top, voice[0]->dest,
  246.                                           SCROLLER_Visible, 1,
  247.                                           SCROLLER_Total, 96,
  248.                                           SCROLLER_ArrowDelta, 1,
  249.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  250.                                         ScrollerEnd,
  251.                                         CHILD_Label, LabelObject,
  252.                                                 LABEL_Text, "Voice",
  253.                                         LabelEnd,
  254.  
  255.                                 LAYOUT_AddChild, gMain_Gadgets[ 55 ] =ButtonObject,
  256.                                         GA_ID,55,
  257.                                         GA_ReadOnly, TRUE,
  258.                                         GA_Text,"0",
  259.                                 ButtonEnd,
  260.                                 CHILD_WeightedHeight,0,
  261.  
  262.                                 LayoutEnd,
  263.                                 CHILD_WeightedHeight,0,
  264.  
  265.                                 LAYOUT_AddChild, HGroupObject,
  266.  
  267.                                 LAYOUT_AddChild,  gMain_Gadgets[ 5 ] = StringObject,
  268.                                           GA_ID, 5,
  269.                                           GA_RelVerify, TRUE,
  270.                                           GA_TabCycle, TRUE,
  271.                                           STRINGA_TextVal, voice[0]->name,
  272.                                           STRINGA_MaxChars, 9,
  273.                                         StringEnd,
  274.                                         CHILD_Label, LabelObject,
  275.                                                 LABEL_Text, "Voice Name",
  276.                                         LabelEnd,
  277.  
  278.                                 LAYOUT_AddChild, gMain_Gadgets[ 52 ] = ScrollerObject,
  279.                                           GA_ID, 52,
  280.                                           GA_RelVerify, TRUE,
  281.                                           GA_TabCycle, TRUE,
  282.                                           SCROLLER_Top, voice[0]->dest,
  283.                                           SCROLLER_Visible, 1,
  284.                                           SCROLLER_Total, 96,
  285.                                           SCROLLER_ArrowDelta, 1,
  286.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  287.                                         ScrollerEnd,
  288.                                         CHILD_Label, LabelObject,
  289.                                                 LABEL_Text, "Destination",
  290.                                         LabelEnd,
  291.  
  292.                                LAYOUT_AddChild, gMain_Gadgets[ 53 ] =ButtonObject,
  293.                                         GA_ID,53,
  294.                                         GA_ReadOnly, TRUE,
  295.                                         GA_Text,"I00",
  296.                                 ButtonEnd,
  297.                                 CHILD_WeightedHeight,0,
  298.  
  299.                                 LayoutEnd,
  300.                                 CHILD_WeightedHeight,0,
  301.  
  302.                             LAYOUT_AddChild, HGroupObject,
  303.  
  304.                                 LAYOUT_AddChild, gMain_Gadgets[ 30 ] = CheckBoxObject,
  305.                                           GA_ID, 30,
  306.                                           GA_RelVerify, TRUE,
  307.                                           GA_TabCycle, TRUE,
  308.                                           GA_Text, "Reverse",
  309.                                           CHECKBOX_TextPen, 1,
  310.                                           CHECKBOX_BackgroundPen, 0,
  311.                                           CHECKBOX_FillTextPen, 1,
  312.                                           CHECKBOX_TextPlace, PLACETEXT_LEFT,
  313.                                         CheckBoxEnd,
  314.  
  315.                                  LAYOUT_AddChild, gMain_Gadgets[ 31 ] = CheckBoxObject,
  316.                                           GA_ID, 31,
  317.                                           GA_RelVerify, TRUE,
  318.                                           GA_TabCycle, TRUE,
  319.                                           GA_Text, "Reverse",
  320.                                           CHECKBOX_TextPen, 1,
  321.                                           CHECKBOX_BackgroundPen, 0,
  322.                                           CHECKBOX_FillTextPen, 1,
  323.                                           CHECKBOX_TextPlace, PLACETEXT_LEFT,
  324.                                         CheckBoxEnd,
  325.  
  326.                                 LAYOUT_AddChild, gMain_Gadgets[ 32 ] = CheckBoxObject,
  327.                                           GA_ID, 32,
  328.                                           GA_RelVerify, TRUE,
  329.                                           GA_TabCycle, TRUE,
  330.                                           GA_Text, "Off",
  331.                                           CHECKBOX_TextPen, 1,
  332.                                           CHECKBOX_BackgroundPen, 0,
  333.                                           CHECKBOX_FillTextPen, 1,
  334.                                           CHECKBOX_TextPlace, PLACETEXT_LEFT,
  335.                                         CheckBoxEnd,
  336.                                 LayoutEnd,
  337.                                 CHILD_WeightedHeight,0,
  338.  
  339.  
  340.                                 LAYOUT_AddChild,  HGroupObject,
  341.  
  342.                                 LAYOUT_AddChild, gMain_Gadgets[ 28 ] =ButtonObject,
  343.                                         GA_ID,28,
  344.                                         GA_ReadOnly, TRUE,
  345.                                         GA_Text,"Bass Drum Analog",
  346.                                 ButtonEnd,
  347.                                 CHILD_WeightedHeight,0,
  348.  
  349.                                 LAYOUT_AddChild, gMain_Gadgets[ 29 ] =ButtonObject,
  350.                                         GA_ID,29,
  351.                                         GA_ReadOnly, TRUE,
  352.                                         GA_Text,"Off",
  353.                                 ButtonEnd,
  354.                                 CHILD_WeightedHeight,0,
  355.  
  356.                                 LayoutEnd,
  357.                                 CHILD_WeightedHeight,0,
  358.  
  359.                                 LAYOUT_AddChild, LayoutObject,
  360.                                         LAYOUT_DeferLayout, FALSE,
  361.                                         LAYOUT_SpaceOuter, FALSE,
  362.                                         LAYOUT_BottomSpacing, 2,
  363.                                         LAYOUT_TopSpacing, 2,
  364.                                         LAYOUT_LeftSpacing, 2,
  365.                                         LAYOUT_RightSpacing, 2,
  366.                                         LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ,
  367.                                         LAYOUT_HorizAlignment, LALIGN_LEFT,
  368.                                         LAYOUT_VertAlignment, LALIGN_TOP,
  369.                                         LAYOUT_BevelState, IDS_SELECTED,
  370.                                         LAYOUT_FixedHoriz, TRUE,
  371.                                         LAYOUT_FixedVert, TRUE,
  372.                                         LAYOUT_SpaceInner, TRUE,
  373.  
  374.                                         LAYOUT_AddChild, gMain_Gadgets[ 0 ] = ScrollerObject,
  375.                                           GA_ID, 0,
  376.                                           GA_RelVerify, TRUE,
  377.                                           GA_TabCycle, TRUE,
  378.                                           SCROLLER_Top, voice[0]->level,
  379.                                           SCROLLER_Visible, 1,
  380.                                           SCROLLER_Total, 64,
  381.                                           SCROLLER_ArrowDelta, 1,
  382.                                           SCROLLER_Orientation, SORIENT_VERT,
  383.                                         ScrollerEnd,
  384.                                         CHILD_Label, LabelObject,
  385.                                                 LABEL_Text, "M Level",
  386.                                         LabelEnd,
  387.                                                 CHILD_MinHeight, 14,
  388.  
  389.                                         LAYOUT_AddChild, gMain_Gadgets[ 1 ] = ListBrowserObject,
  390.                                           GA_ID, 1,
  391.                                           GA_RelVerify, TRUE,
  392.                                           LISTBROWSER_Position, 0,
  393.                                           LISTBROWSER_ShowSelected, TRUE,
  394.                                           LISTBROWSER_Selected, voice[0]->wave1+1,
  395.                                           LISTBROWSER_VertSeparators, TRUE,
  396.                                           LISTBROWSER_Separators, TRUE,
  397.                                           LISTBROWSER_Labels, &Wavelist,
  398.                                         ListBrowserEnd,
  399.  
  400.  
  401.                                         LAYOUT_AddChild, gMain_Gadgets[ 2 ] = ScrollerObject,
  402.                                           GA_ID, 2,
  403.                                           GA_RelVerify, TRUE,
  404.                                           GA_TabCycle, TRUE,
  405.                                           SCROLLER_Top, voice[0]->wave1level,
  406.                                           SCROLLER_Visible, 1,
  407.                                           SCROLLER_Total, 64,
  408.                                           SCROLLER_ArrowDelta, 1,
  409.                                           SCROLLER_Orientation, SORIENT_VERT,
  410.                                         ScrollerEnd,
  411.                                         CHILD_Label, LabelObject,
  412.                                                 LABEL_Text, "Level 1",
  413.                                         LabelEnd,
  414.                                                 CHILD_MinHeight, 14,
  415.  
  416.                                         LAYOUT_AddChild, gMain_Gadgets[ 3 ] = ListBrowserObject,
  417.                                           GA_ID, 3,
  418.                                           GA_RelVerify, TRUE,
  419.                                           LISTBROWSER_Position, 0,
  420.                                           LISTBROWSER_Selected, voice[0]->wave2+1,
  421.                                           LISTBROWSER_ShowSelected, TRUE,
  422.                                           LISTBROWSER_VertSeparators, TRUE,
  423.                                           LISTBROWSER_Separators, TRUE,
  424.                                           LISTBROWSER_Labels, &Wavelist2,
  425.                                         ListBrowserEnd,
  426.  
  427.                                         LAYOUT_AddChild, gMain_Gadgets[ 4 ] = ScrollerObject,
  428.                                           GA_ID, 4,
  429.                                           GA_RelVerify, TRUE,
  430.                                           GA_TabCycle, TRUE,
  431.                                           SCROLLER_Top, voice[0]->wave2level,
  432.                                           SCROLLER_Visible, 1,
  433.                                           SCROLLER_Total, 64,
  434.                                           SCROLLER_ArrowDelta, 1,
  435.                                           SCROLLER_Orientation, SORIENT_VERT,
  436.                                         ScrollerEnd,
  437.                                         CHILD_Label, LabelObject,
  438.                                                 LABEL_Text, "Level 2",
  439.                                         LabelEnd,
  440.                                                 CHILD_MinHeight, 14,
  441.  
  442.                                   LayoutEnd,
  443.  
  444.                                 LAYOUT_AddChild, LayoutObject,
  445.                                         LAYOUT_DeferLayout, FALSE,
  446.                                         LAYOUT_SpaceOuter, FALSE,
  447.                                         LAYOUT_BottomSpacing, 2,
  448.                                         LAYOUT_TopSpacing, 2,
  449.                                         LAYOUT_LeftSpacing, 2,
  450.                                         LAYOUT_RightSpacing, 2,
  451.                                         LAYOUT_Orientation, LAYOUT_ORIENT_VERT,
  452.                                         LAYOUT_HorizAlignment, LALIGN_LEFT,
  453.                                         LAYOUT_VertAlignment, LALIGN_TOP,
  454.                                         LAYOUT_BevelState, IDS_SELECTED,
  455.                                         LAYOUT_FixedHoriz, TRUE,
  456.                                         LAYOUT_FixedVert, TRUE,
  457.                                         LAYOUT_SpaceInner, TRUE,
  458.  
  459.                                         LAYOUT_AddChild, HGroupObject,
  460.  
  461.                                         LAYOUT_AddChild, VGroupObject,
  462.  
  463.                                         LAYOUT_AddChild, gMain_Gadgets[ 6 ] = ScrollerObject,
  464.                                           GA_ID, 6,
  465.                                           GA_RelVerify, TRUE,
  466.                                           GA_TabCycle, TRUE,
  467.                                           SCROLLER_Top, voice[0]->pan1,
  468.                                           SCROLLER_Visible, 1,
  469.                                           SCROLLER_Total, 33,
  470.                                           SCROLLER_ArrowDelta, 1,
  471.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  472.                                         ScrollerEnd,
  473.                                         CHILD_Label, LabelObject,
  474.                                                 LABEL_Text, "Pan 1",
  475.                                         LabelEnd,
  476.                                                 CHILD_MinHeight, 14,
  477.  
  478.  
  479.                                         LAYOUT_AddChild, gMain_Gadgets[ 8 ] = ScrollerObject,
  480.                                           GA_ID, 8,
  481.                                           GA_RelVerify, TRUE,
  482.                                           GA_TabCycle, TRUE,
  483.                                           SCROLLER_Top, voice[0]->pitch1,
  484.                                           SCROLLER_Visible, 1,
  485.                                           SCROLLER_Total, 73,
  486.                                           SCROLLER_ArrowDelta, 1,
  487.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  488.                                         ScrollerEnd,
  489.                                         CHILD_Label, LabelObject,
  490.                                                 LABEL_Text, "Pitch 1",
  491.                                         LabelEnd,
  492.                                                 CHILD_MinHeight, 14,
  493.  
  494.                                          LAYOUT_AddChild, gMain_Gadgets[ 10 ] = ScrollerObject,
  495.                                           GA_ID, 10,
  496.                                           GA_RelVerify, TRUE,
  497.                                           GA_TabCycle, TRUE,
  498.                                           SCROLLER_Top, voice[0]->decay1,
  499.                                           SCROLLER_Visible, 1,
  500.                                           SCROLLER_Total, 64,
  501.                                           SCROLLER_ArrowDelta, 1,
  502.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  503.                                         ScrollerEnd,
  504.                                         CHILD_Label, LabelObject,
  505.                                                 LABEL_Text, "Decay 1",
  506.                                         LabelEnd,
  507.                                                 CHILD_MinHeight, 14,
  508.                                                 CHILD_WeightedHeight, 0,
  509.  
  510.                                         LAYOUT_AddChild, gMain_Gadgets[ 12 ] = ChooserObject,
  511.                                           GA_ID, 12,
  512.                                           GA_RelVerify, TRUE,
  513.                                           GA_TabCycle, TRUE,
  514.                                           CHOOSER_PopUp, TRUE,
  515.                                           CHOOSER_MaxLabels, 5,
  516.                                           CHOOSER_Active, voice[0]->filter1,
  517.                                           CHOOSER_Width, -1,
  518.                                           CHOOSER_Labels, &C_Filter1_list,
  519.                                         ChooserEnd,
  520.                                         CHILD_Label, LabelObject,
  521.                                                 LABEL_Text, "Filter 1",
  522.                                         LabelEnd,
  523.  
  524.                                         LAYOUT_AddChild, gMain_Gadgets[ 14 ] = ScrollerObject,
  525.                                           GA_ID, 14,
  526.                                           GA_RelVerify, TRUE,
  527.                                           GA_TabCycle, TRUE,
  528.                                           SCROLLER_Top, voice[0]->cutoff1,
  529.                                           SCROLLER_Visible, 1,
  530.                                           SCROLLER_Total, 128,
  531.                                           SCROLLER_ArrowDelta, 1,
  532.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  533.                                         ScrollerEnd,
  534.                                         CHILD_Label, LabelObject,
  535.                                                 LABEL_Text, "Cut Off 1",
  536.                                         LabelEnd,
  537.                                                 CHILD_MinHeight, 14,
  538.                                                 CHILD_WeightedHeight, 0,
  539.  
  540.                                          LAYOUT_AddChild, gMain_Gadgets[ 16 ] = ScrollerObject,
  541.                                           GA_ID, 16,
  542.                                           GA_RelVerify, TRUE,
  543.                                           GA_TabCycle, TRUE,
  544.                                           SCROLLER_Top, voice[0]->res1,
  545.                                           SCROLLER_Visible, 1,
  546.                                           SCROLLER_Total, 101,
  547.                                           SCROLLER_ArrowDelta, 1,
  548.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  549.                                         ScrollerEnd,
  550.                                         CHILD_Label, LabelObject,
  551.                                                 LABEL_Text, "Res 1",
  552.                                         LabelEnd,
  553.                                                 CHILD_MinHeight, 14,
  554.                                                 CHILD_WeightedHeight, 0,
  555.  
  556.                                          LAYOUT_AddChild, gMain_Gadgets[ 18 ] = ScrollerObject,
  557.                                           GA_ID, 18,
  558.                                           GA_RelVerify, TRUE,
  559.                                           GA_TabCycle, TRUE,
  560.                                           SCROLLER_Top, voice[0]->eg1level,
  561.                                           SCROLLER_Visible, 1,
  562.                                           SCROLLER_Total, 129,
  563.                                           SCROLLER_ArrowDelta, 1,
  564.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  565.                                         ScrollerEnd,
  566.                                         CHILD_Label, LabelObject,
  567.                                                 LABEL_Text, "EG Level 1",
  568.                                         LabelEnd,
  569.                                                 CHILD_MinHeight, 14,
  570.                                                 CHILD_WeightedHeight, 0,
  571.  
  572.  
  573.                                          LAYOUT_AddChild, gMain_Gadgets[ 20 ] = ScrollerObject,
  574.                                           GA_ID, 20,
  575.                                           GA_RelVerify, TRUE,
  576.                                           GA_TabCycle, TRUE,
  577.                                           SCROLLER_Top, voice[0]->eg1rate,
  578.                                           SCROLLER_Visible, 1,
  579.                                           SCROLLER_Total, 64,
  580.                                           SCROLLER_ArrowDelta, 1,
  581.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  582.                                         ScrollerEnd,
  583.                                         CHILD_Label, LabelObject,
  584.                                                 LABEL_Text, "EG Rate 1",
  585.                                         LabelEnd,
  586.                                                 CHILD_MinHeight, 14,
  587.                                                 CHILD_WeightedHeight, 0,
  588.  
  589.                                          LAYOUT_AddChild, gMain_Gadgets[ 22 ] = ScrollerObject,
  590.                                           GA_ID, 22,
  591.                                           GA_RelVerify, TRUE,
  592.                                           GA_TabCycle, TRUE,
  593.                                           SCROLLER_Top, voice[0]->peglevel,
  594.                                           SCROLLER_Visible, 1,
  595.                                           SCROLLER_Total, 145,
  596.                                           SCROLLER_ArrowDelta, 1,
  597.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  598.                                         ScrollerEnd,
  599.                                         CHILD_Label, LabelObject,
  600.                                                 LABEL_Text, "Pitch EG Level",
  601.                                         LabelEnd,
  602.                                                 CHILD_MinHeight, 14,
  603.                                                 CHILD_WeightedHeight, 0,
  604.  
  605.  
  606.                                          LAYOUT_AddChild, gMain_Gadgets[ 25 ] = ChooserObject,
  607.                                           GA_ID, 25,
  608.                                           GA_RelVerify, TRUE,
  609.                                           GA_TabCycle, TRUE,
  610.                                           CHOOSER_PopUp, TRUE,
  611.                                           CHOOSER_MaxLabels, 9,
  612.                                           CHOOSER_Active, voice[0]->group,
  613.                                           CHOOSER_Width, -1,
  614.                                           CHOOSER_Labels, &C_Alternate_list,
  615.                                         ChooserEnd,
  616.                                         CHILD_Label, LabelObject,
  617.                                                 LABEL_Text, "Alt Group",
  618.                                         LabelEnd,
  619.  
  620.                                         LAYOUT_AddChild, gMain_Gadgets[ 24 ] = CheckBoxObject,
  621.                                           GA_ID, 24,
  622.                                           GA_RelVerify, TRUE,
  623.                                           GA_TabCycle, TRUE,
  624.                                           GA_Text, "Polyphonic",
  625.                                           CHECKBOX_TextPen, 1,
  626.                                           CHECKBOX_Checked, voice[0]->poly,
  627.                                           CHECKBOX_BackgroundPen, 0,
  628.                                           CHECKBOX_FillTextPen, 1,
  629.                                           CHECKBOX_TextPlace, PLACETEXT_LEFT,
  630.                                         CheckBoxEnd,
  631.  
  632.                                          LayoutEnd,
  633.  
  634.                                         LAYOUT_AddChild, VGroupObject,
  635.  
  636.                                         LAYOUT_AddChild, gMain_Gadgets[ 33 ] =ButtonObject,
  637.                                         GA_ID,33,
  638.                                         GA_ReadOnly, TRUE,
  639.                                         GA_Text,"0",
  640.                                         ButtonEnd,
  641.                                         CHILD_WeightedHeight,0,
  642.                                         CHILD_WeightedWidth,10,
  643.  
  644.                                          LAYOUT_AddChild, gMain_Gadgets[ 34 ] =ButtonObject,
  645.                                         GA_ID,34,
  646.                                         GA_ReadOnly, TRUE,
  647.                                         GA_Text,"0",
  648.                                         ButtonEnd,
  649.                                         CHILD_WeightedWidth,10,
  650.                                         CHILD_WeightedHeight,0,
  651.  
  652.                                         LAYOUT_AddChild, gMain_Gadgets[ 35 ] =ButtonObject,
  653.                                         GA_ID,35,
  654.                                         GA_ReadOnly, TRUE,
  655.                                         GA_Text,"0",
  656.                                         ButtonEnd,
  657.                                         CHILD_WeightedWidth,10,
  658.                                         CHILD_WeightedHeight,0,
  659.  
  660.                                         LAYOUT_AddChild, SpaceObject,
  661.                                         SpaceEnd,
  662.  
  663.                                          LAYOUT_AddChild, gMain_Gadgets[ 37 ] =ButtonObject,
  664.                                         GA_ID,37,
  665.                                         GA_ReadOnly, TRUE,
  666.                                         GA_Text,"0",
  667.                                         ButtonEnd,
  668.                                         CHILD_WeightedWidth,10,
  669.                                         CHILD_WeightedHeight,0,
  670.  
  671.                                          LAYOUT_AddChild, gMain_Gadgets[ 38 ] =ButtonObject,
  672.                                         GA_ID,38,
  673.                                         GA_ReadOnly, TRUE,
  674.                                         GA_Text,"0",
  675.                                         ButtonEnd,
  676.                                         CHILD_WeightedWidth,10,
  677.                                         CHILD_WeightedHeight,0,
  678.  
  679.                                          LAYOUT_AddChild, gMain_Gadgets[ 39 ] =ButtonObject,
  680.                                         GA_ID,39,
  681.                                         GA_ReadOnly, TRUE,
  682.                                         GA_Text,"0",
  683.                                         ButtonEnd,
  684.                                         CHILD_WeightedHeight,0,
  685.                                         CHILD_WeightedWidth,10,
  686.  
  687.                                          LAYOUT_AddChild, gMain_Gadgets[ 40 ] =ButtonObject,
  688.                                         GA_ID,40,
  689.                                         GA_ReadOnly, TRUE,
  690.                                         GA_Text,"0",
  691.                                         ButtonEnd,
  692.                                         CHILD_WeightedHeight,0,
  693.                                         CHILD_WeightedWidth,10,
  694.  
  695.                                         LAYOUT_AddChild, gMain_Gadgets[ 36 ] =ButtonObject,
  696.                                         GA_ID,36,
  697.                                         GA_ReadOnly, TRUE,
  698.                                         GA_Text,"0",
  699.                                         ButtonEnd,
  700.                                         CHILD_WeightedWidth,10,
  701.                                         CHILD_WeightedHeight,0,
  702.  
  703.                                         LAYOUT_AddChild, SpaceObject,
  704.                                         SpaceEnd,
  705.  
  706.                                         LayoutEnd,
  707.  
  708.                                         LAYOUT_AddChild, VGroupObject,
  709.                                         LAYOUT_InnerSpacing, 10,
  710.  
  711.  
  712.                                         LAYOUT_AddChild, gMain_Gadgets[ 7 ] = ScrollerObject,
  713.                                           GA_ID, 7,
  714.                                           GA_RelVerify, TRUE,
  715.                                           GA_TabCycle, TRUE,
  716.                                           SCROLLER_Top, voice[0]->pan2,
  717.                                           SCROLLER_Visible, 1,
  718.                                           SCROLLER_Total, 33,
  719.                                           SCROLLER_ArrowDelta, 1,
  720.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  721.                                         ScrollerEnd,
  722.                                         CHILD_Label, LabelObject,
  723.                                                 LABEL_Text, "Pan 2",
  724.                                         LabelEnd,
  725.                                                 CHILD_MinHeight, 14,
  726.                                                 CHILD_WeightedHeight, 0,
  727.  
  728.                                         LAYOUT_AddChild, gMain_Gadgets[ 9 ] = ScrollerObject,
  729.                                           GA_ID, 9,
  730.                                           GA_RelVerify, TRUE,
  731.                                           GA_TabCycle, TRUE,
  732.                                           SCROLLER_Top, voice[0]->pitch2,
  733.                                           SCROLLER_Visible, 1,
  734.                                           SCROLLER_Total, 73,
  735.                                           SCROLLER_ArrowDelta, 1,
  736.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  737.                                         ScrollerEnd,
  738.                                         CHILD_Label, LabelObject,
  739.                                                 LABEL_Text, "Pitch 2",
  740.                                         LabelEnd,
  741.                                                 CHILD_MinHeight, 14,
  742.  
  743.                                         LAYOUT_AddChild, gMain_Gadgets[ 11 ] = ScrollerObject,
  744.                                           GA_ID, 11,
  745.                                           GA_RelVerify, TRUE,
  746.                                           GA_TabCycle, TRUE,
  747.                                           SCROLLER_Top, voice[0]->decay2,
  748.                                           SCROLLER_Visible, 1,
  749.                                           SCROLLER_Total, 64,
  750.                                           SCROLLER_ArrowDelta, 1,
  751.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  752.                                         ScrollerEnd,
  753.                                         CHILD_Label, LabelObject,
  754.                                                 LABEL_Text, "Decay 2",
  755.                                         LabelEnd,
  756.                                                 CHILD_MinHeight, 14,
  757.                                                 CHILD_WeightedHeight, 0,
  758.  
  759.                                         LAYOUT_AddChild, gMain_Gadgets[ 13 ] = ChooserObject,
  760.                                           GA_ID, 13,
  761.                                           GA_RelVerify, TRUE,
  762.                                           GA_TabCycle, TRUE,
  763.                                           CHOOSER_PopUp, TRUE,
  764.                                           CHOOSER_MaxLabels, 5,
  765.                                           CHOOSER_Active, voice[0]->filter2,
  766.                                           CHOOSER_Labels, &C_Filter1_list,
  767.                                         ChooserEnd,
  768.                                         CHILD_Label, LabelObject,
  769.                                                 LABEL_Text, "Filter 2",
  770.                                         LabelEnd,
  771.  
  772.  
  773.                                         LAYOUT_AddChild, gMain_Gadgets[ 15 ] = ScrollerObject,
  774.                                           GA_ID, 15,
  775.                                           GA_RelVerify, TRUE,
  776.                                           GA_TabCycle, TRUE,
  777.                                           SCROLLER_Top, voice[0]->cutoff2,
  778.                                           SCROLLER_Visible, 1,
  779.                                           SCROLLER_Total, 128,
  780.                                           SCROLLER_ArrowDelta, 1,
  781.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  782.                                         ScrollerEnd,
  783.                                         CHILD_Label, LabelObject,
  784.                                                 LABEL_Text, "Cut Off 2",
  785.                                         LabelEnd,
  786.                                                 CHILD_MinHeight, 14,
  787.                                                 CHILD_WeightedHeight, 0,
  788.  
  789.                                         LAYOUT_AddChild, gMain_Gadgets[ 17 ] = ScrollerObject,
  790.                                           GA_ID, 17,
  791.                                           GA_RelVerify, TRUE,
  792.                                           GA_TabCycle, TRUE,
  793.                                           SCROLLER_Top, voice[0]->res2,
  794.                                           SCROLLER_Visible, 1,
  795.                                           SCROLLER_Total, 101,
  796.                                           SCROLLER_ArrowDelta, 1,
  797.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  798.                                         ScrollerEnd,
  799.                                         CHILD_Label, LabelObject,
  800.                                                 LABEL_Text, "Res 2",
  801.                                         LabelEnd,
  802.                                                 CHILD_MinHeight, 14,
  803.                                                 CHILD_WeightedHeight, 0,
  804.  
  805.                                         LAYOUT_AddChild, gMain_Gadgets[ 19 ] = ScrollerObject,
  806.                                           GA_ID, 19,
  807.                                           GA_RelVerify, TRUE,
  808.                                           GA_TabCycle, TRUE,
  809.                                           SCROLLER_Top, voice[0]->eg2level,
  810.                                           SCROLLER_Visible, 1,
  811.                                           SCROLLER_Total, 129,
  812.                                           SCROLLER_ArrowDelta, 1,
  813.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  814.                                         ScrollerEnd,
  815.                                         CHILD_Label, LabelObject,
  816.                                                 LABEL_Text, "EG Level 2",
  817.                                         LabelEnd,
  818.                                                 CHILD_MinHeight, 14,
  819.                                                 CHILD_WeightedHeight, 0,
  820.  
  821.                                         LAYOUT_AddChild, gMain_Gadgets[ 21 ] = ScrollerObject,
  822.                                           GA_ID, 21,
  823.                                           GA_RelVerify, TRUE,
  824.                                           GA_TabCycle, TRUE,
  825.                                           SCROLLER_Top, voice[0]->eg2rate,
  826.                                           SCROLLER_Visible, 1,
  827.                                           SCROLLER_Total, 64,
  828.                                           SCROLLER_ArrowDelta, 1,
  829.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  830.                                         ScrollerEnd,
  831.                                         CHILD_Label, LabelObject,
  832.                                                 LABEL_Text, "EG Rate 2",
  833.                                         LabelEnd,
  834.                                                 CHILD_MinHeight, 14,
  835.                                                 CHILD_WeightedHeight, 0,
  836.  
  837.                                         LAYOUT_AddChild, gMain_Gadgets[ 23 ] = ScrollerObject,
  838.                                           GA_ID, 23,
  839.                                           GA_RelVerify, TRUE,
  840.                                           GA_TabCycle, TRUE,
  841.                                           SCROLLER_Top, voice[0]->pegrate,
  842.                                           SCROLLER_Visible, 1,
  843.                                           SCROLLER_Total, 64,
  844.                                           SCROLLER_ArrowDelta, 1,
  845.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  846.                                         ScrollerEnd,
  847.                                         CHILD_Label, LabelObject,
  848.                                                 LABEL_Text, "Pitch EG Rate",
  849.                                         LabelEnd,
  850.                                                 CHILD_MinHeight, 14,
  851.                                                 CHILD_WeightedHeight, 0,
  852.  
  853.                                         LAYOUT_AddChild, gMain_Gadgets[ 26 ] = ChooserObject,
  854.                                           GA_ID, 26,
  855.                                           GA_RelVerify, TRUE,
  856.                                           GA_TabCycle, TRUE,
  857.                                           CHOOSER_PopUp, TRUE,
  858.                                           CHOOSER_MaxLabels, 12,
  859.                                           CHOOSER_Active, voice[0]->output,
  860.                                           CHOOSER_Width, -1,
  861.                                           CHOOSER_Labels, &C_Output_list,
  862.                                         ChooserEnd,
  863.                                         CHILD_Label, LabelObject,
  864.                                                 LABEL_Text, "Output Assign",
  865.                                         LabelEnd,
  866.  
  867.  
  868.                                         LAYOUT_AddChild, gMain_Gadgets[ 27 ] = ScrollerObject,
  869.                                           GA_ID, 27,
  870.                                           GA_RelVerify, TRUE,
  871.                                           GA_TabCycle, TRUE,
  872.                                           SCROLLER_Top, voice[0]->indlevel,
  873.                                           SCROLLER_Visible, 1,
  874.                                           SCROLLER_Total, 64,
  875.                                           SCROLLER_ArrowDelta, 1,
  876.                                           SCROLLER_Orientation, SORIENT_HORIZ,
  877.                                         ScrollerEnd,
  878.                                         CHILD_Label, LabelObject,
  879.                                                 LABEL_Text, "Indv Level",
  880.                                         LabelEnd,
  881.                                                 CHILD_MinHeight, 14,
  882.                                                 CHILD_WeightedHeight, 0,
  883.  
  884.                                         
  885.                                         LayoutEnd,
  886.  
  887.                                         LAYOUT_AddChild, VGroupObject,
  888.  
  889.                                         LAYOUT_AddChild, gMain_Gadgets[ 42 ] =ButtonObject,
  890.                                         GA_ID,42,
  891.                                         GA_ReadOnly, TRUE,
  892.                                         GA_Text,"0",
  893.                                         ButtonEnd,
  894.                                         CHILD_WeightedWidth,10,
  895.                                         CHILD_WeightedHeight,0,
  896.  
  897.                                         LAYOUT_AddChild, gMain_Gadgets[ 43 ] =ButtonObject,
  898.                                         GA_ID,43,
  899.                                         GA_ReadOnly, TRUE,
  900.                                         GA_Text,"0",
  901.                                         ButtonEnd,
  902.                                         CHILD_WeightedWidth,10,
  903.                                         CHILD_WeightedHeight,0,
  904.  
  905.                                         LAYOUT_AddChild, gMain_Gadgets[ 44 ] =ButtonObject,
  906.                                         GA_ID,44,
  907.                                         GA_ReadOnly, TRUE,
  908.                                         GA_Text,"0",
  909.                                         ButtonEnd,
  910.                                         CHILD_WeightedWidth,10,
  911.                                         CHILD_WeightedHeight,0,
  912.  
  913.                                         LAYOUT_AddChild, SpaceObject,
  914.                                         SpaceEnd,
  915.  
  916.                                         LAYOUT_AddChild, gMain_Gadgets[ 46 ] =ButtonObject,
  917.                                         GA_ID,46,
  918.                                         GA_ReadOnly, TRUE,
  919.                                         GA_Text,"0",
  920.                                         ButtonEnd,
  921.                                         CHILD_WeightedWidth,10,
  922.                                         CHILD_WeightedHeight,0,
  923.  
  924.                                         LAYOUT_AddChild, gMain_Gadgets[ 47 ] =ButtonObject,
  925.                                         GA_ID,47,
  926.                                         GA_ReadOnly, TRUE,
  927.                                         GA_Text,"0",
  928.                                         ButtonEnd,
  929.                                         CHILD_WeightedWidth,10,
  930.                                         CHILD_WeightedHeight,0,
  931.  
  932.                                         LAYOUT_AddChild, gMain_Gadgets[ 48 ] =ButtonObject,
  933.                                         GA_ID,48,
  934.                                         GA_ReadOnly, TRUE,
  935.                                         GA_Text,"0",
  936.                                         ButtonEnd,
  937.                                         CHILD_WeightedWidth,10,
  938.                                         CHILD_WeightedHeight,0,
  939.  
  940.                                         LAYOUT_AddChild, gMain_Gadgets[ 49 ] =ButtonObject,
  941.                                         GA_ID,49,
  942.                                         GA_ReadOnly, TRUE,
  943.                                         GA_Text,"0",
  944.                                         ButtonEnd,
  945.                                         CHILD_WeightedWidth,10,
  946.                                         CHILD_WeightedHeight,0,
  947.  
  948.                                         LAYOUT_AddChild, gMain_Gadgets[ 45 ] =ButtonObject,
  949.                                         GA_ID,45,
  950.                                         GA_ReadOnly, TRUE,
  951.                                         GA_Text,"0",
  952.                                         ButtonEnd,
  953.                                         CHILD_WeightedWidth,10,
  954.                                         CHILD_WeightedHeight,0,
  955.  
  956.                                          LAYOUT_AddChild, gMain_Gadgets[ 41 ] =ButtonObject,
  957.                                         GA_ID,41,
  958.                                         GA_ReadOnly, TRUE,
  959.                                         GA_Text,"0",
  960.                                         ButtonEnd,
  961.                                         CHILD_WeightedWidth,10,
  962.                                         CHILD_WeightedHeight,0,
  963.  
  964.                                         LAYOUT_AddChild, SpaceObject,
  965.                                         SpaceEnd,
  966.  
  967.                                         LayoutEnd,
  968.                                         LayoutEnd,
  969.                                 LayoutEnd,
  970.                         LayoutEnd,
  971.  
  972.                         LAYOUT_AddChild, HGroupObject,
  973.  
  974.                         LAYOUT_AddChild, gMain_Gadgets[ 51 ] =ButtonObject,
  975.                                         GA_ID,51,
  976.                                         GA_ReadOnly, FALSE,
  977.                                         GA_RelVerify, TRUE,
  978.                                         GA_Text,"Save Voice As...",
  979.                                         ButtonEnd,
  980.                                         CHILD_WeightedWidth, 0,
  981.                                         CHILD_WeightedHeight,0,
  982.  
  983.                        LAYOUT_AddChild, gMain_Gadgets[ 56 ] =ButtonObject,
  984.                                         GA_ID,56,
  985.                                         GA_ReadOnly, FALSE,
  986.                                         GA_RelVerify, TRUE,
  987.                                         GA_Text,"Reset Sliders",
  988.                                         ButtonEnd,
  989.                                         CHILD_WeightedWidth, 0,
  990.                                         CHILD_WeightedHeight,0,
  991.  
  992.                        LAYOUT_AddChild, gMain_Gadgets[ 62 ] = CheckBoxObject,
  993.                                           GA_ID, 62,
  994.                                           GA_RelVerify, TRUE,
  995.                                           GA_TabCycle, TRUE,
  996.                                           GA_Text, "Osc1",
  997.                                           CHECKBOX_Checked, osc1,
  998.                                           CHECKBOX_TextPen, 1,
  999.                                           CHECKBOX_BackgroundPen, 0,
  1000.                                           CHECKBOX_FillTextPen, 1,
  1001.                                           CHECKBOX_TextPlace, PLACETEXT_LEFT,
  1002.                                         CheckBoxEnd,
  1003.  
  1004.                        LAYOUT_AddChild, gMain_Gadgets[ 63 ] = CheckBoxObject,
  1005.                                           GA_ID, 63,
  1006.                                           GA_RelVerify, TRUE,
  1007.                                           GA_TabCycle, TRUE,
  1008.                                           GA_Text, "Osc2",
  1009.                                           CHECKBOX_Checked, osc2,
  1010.                                           CHECKBOX_TextPen, 1,
  1011.                                           CHECKBOX_BackgroundPen, 0,
  1012.                                           CHECKBOX_FillTextPen, 1,
  1013.                                           CHECKBOX_TextPlace, PLACETEXT_LEFT,
  1014.                                         CheckBoxEnd,
  1015.  
  1016.                         LAYOUT_AddChild, gMain_Gadgets[ 57 ] =ButtonObject,
  1017.                                         GA_ID,57,
  1018.                                         GA_ReadOnly, FALSE,
  1019.                                         GA_RelVerify, TRUE,
  1020.                                         GA_Text,"Randomise Voice",
  1021.                                         ButtonEnd,
  1022.                                         CHILD_WeightedWidth, 0,
  1023.                                         CHILD_WeightedHeight,0,
  1024.  
  1025.                        LAYOUT_AddChild, gMain_Gadgets[ 64 ] =ButtonObject,
  1026.                                         GA_ID,64,
  1027.                                         GA_ReadOnly, FALSE,
  1028.                                         GA_RelVerify, TRUE,
  1029.                                         GA_Text,"Randomise BANK!",
  1030.                                         ButtonEnd,
  1031.                                         CHILD_WeightedWidth, 0,
  1032.                                         CHILD_WeightedHeight,0,
  1033.  
  1034.  
  1035.                        LayoutEnd,
  1036.                        CHILD_WeightedHeight,0,
  1037.  
  1038.  
  1039.                        LAYOUT_AddChild, HGroupObject,
  1040.  
  1041.                        LAYOUT_AddChild, gMain_Gadgets[ 58 ] =ButtonObject,
  1042.                                         GA_ID,58,
  1043.                                         GA_ReadOnly, FALSE,
  1044.                                         GA_RelVerify, TRUE,
  1045.                                         GA_Text,"Randomise Wave",
  1046.                                         ButtonEnd,
  1047.                                         CHILD_WeightedWidth, 0,
  1048.                                         CHILD_WeightedHeight,0,
  1049.  
  1050.                        LAYOUT_AddChild, gMain_Gadgets[ 59 ] =ButtonObject,
  1051.                                         GA_ID,59,
  1052.                                         GA_ReadOnly, FALSE,
  1053.                                         GA_RelVerify, TRUE,
  1054.                                         GA_Text,"Randomise Pitch",
  1055.                                         ButtonEnd,
  1056.                                         CHILD_WeightedWidth, 0,
  1057.                                         CHILD_WeightedHeight,0,
  1058.  
  1059.                        LAYOUT_AddChild, gMain_Gadgets[ 60 ] =ButtonObject,
  1060.                                         GA_ID,60,
  1061.                                         GA_ReadOnly, FALSE,
  1062.                                         GA_RelVerify, TRUE,
  1063.                                         GA_Text,"Randomise Filter",
  1064.                                         ButtonEnd,
  1065.                                         CHILD_WeightedWidth, 0,
  1066.                                         CHILD_WeightedHeight,0,
  1067.  
  1068.                        LAYOUT_AddChild, gMain_Gadgets[ 61 ] =ButtonObject,
  1069.                                         GA_ID,61,
  1070.                                         GA_ReadOnly, FALSE,
  1071.                                         GA_RelVerify, TRUE,
  1072.                                         GA_Text,"Randomise Pan/Decay",
  1073.                                         ButtonEnd,
  1074.                                         CHILD_WeightedWidth, 0,
  1075.                                         CHILD_WeightedHeight,0,
  1076.  
  1077.                        LayoutEnd,
  1078.                        CHILD_WeightedHeight,0,
  1079.  
  1080.                 LayoutEnd,
  1081.         WindowEnd;
  1082.  
  1083.         if ( gWindow_object )
  1084.         {
  1085.           if ( gMain_window = (struct Window *) CA_OpenWindow( gWindow_object ))
  1086.           {
  1087.                 WORD Code;
  1088.                 char buff[15];
  1089.                 
  1090.                 char *name;
  1091.                 ULONG wait = 0, signal = 0, result = 0, done = FALSE;
  1092.                 GetAttr( WINDOW_SigMask, gWindow_object, &signal );
  1093.  
  1094.                 while ( !done)
  1095.                 {
  1096.                   wait = Wait( signal | SIGBREAKF_CTRL_C );
  1097.  
  1098.                   if ( wait & SIGBREAKF_CTRL_C )
  1099.                         done = TRUE;
  1100.                   else
  1101.                   while (( result = CA_HandleInput( gWindow_object, &Code )) != WMHI_LASTMSG)
  1102.                   {
  1103.                         switch ( result & WMHI_CLASSMASK )
  1104.                         {
  1105.                           case WMHI_CLOSEWINDOW:
  1106.                                 done = TRUE;
  1107.                                 break;
  1108.  
  1109.                           case WMHI_GADGETUP:
  1110.                                 switch( result & WMHI_GADGETMASK )
  1111.                                 {
  1112.                                   case 0:       // Scroller Voice Level
  1113.  
  1114.                                         voice[voic]->level = Code;
  1115.                                         dump(voice[voic], TRUE);
  1116.                                         break;
  1117.  
  1118.                                   case 1:       // ListBrowser _ListBrowser1
  1119.  
  1120.                                         voice[voic]->wave1 = Code;
  1121.  
  1122.                                         GetAttr(LISTBROWSER_SelectedNode, gMain_Gadgets[ 1 ], (ULONG *)&node);
  1123.  
  1124.                                         GetListBrowserNodeAttrs(node, LBNCA_Text, &nodename,
  1125.                                             TAG_END);
  1126.  
  1127.                                         SetGadgetAttrs(gMain_Gadgets[28], gMain_window, NULL,
  1128.                                         GA_Text, nodename,
  1129.                                         TAG_DONE);
  1130.  
  1131.                                         dump(voice[voic], TRUE);
  1132.                                         break;
  1133.  
  1134.                                   case 2:       // Scroller Wave 1 Level
  1135.  
  1136.                                         voice[voic]->wave1level = Code;
  1137.  
  1138.                                         dump(voice[voic], TRUE);
  1139.                                         break;
  1140.  
  1141.                                   case 3:       // ListBrowser _ListBrowser2
  1142.  
  1143.                                         voice[voic]->wave2 = Code;
  1144.  
  1145.                                         GetAttr(LISTBROWSER_SelectedNode, gMain_Gadgets[ 3 ], (ULONG *)&node);
  1146.  
  1147.                                         GetListBrowserNodeAttrs(node, LBNCA_Text, &nodename,
  1148.                                             TAG_END);
  1149.  
  1150.                                         SetGadgetAttrs(gMain_Gadgets[29], gMain_window, NULL,
  1151.                                         GA_Text, nodename,
  1152.                                         TAG_DONE);
  1153.  
  1154.                                         dump(voice[voic], TRUE);
  1155.                                         break;
  1156.  
  1157.                                   case 4:       // Scroller Wave 2 Level
  1158.  
  1159.                                         voice[voic]->wave2level = Code;
  1160.  
  1161.                                         dump(voice[voic], TRUE);
  1162.                                         break;
  1163.  
  1164.                                   case 5:       // String Voice Name
  1165.                                         GetAttr(STRINGA_TextVal, gMain_Gadgets[ 5 ], (ULONG *)&name);
  1166.                                         strcpy(voice[voic]->name,name);
  1167.  
  1168.                                         dump(voice[voic], TRUE);
  1169.                                         break;
  1170.  
  1171.                                   case 6:       // Scroller Pan 1
  1172.  
  1173.                                         voice[voic]->pan1 = Code;
  1174.                                         setind(33,Code-16);  //6
  1175.                                         dump(voice[voic], TRUE);
  1176.                                         break;
  1177.  
  1178.                                   case 7:       // Scroller Pan 2
  1179.  
  1180.                                         voice[voic]->pan2 = Code;
  1181.                                         setind(42,Code-16);  //7
  1182.                                         dump(voice[voic], TRUE);
  1183.                                         break;
  1184.  
  1185.                                   case 8:       // Scroller Pitch 1
  1186.                                         voice[voic]->pitch1 = Code;
  1187.                                         setind(34,Code-36);  //8
  1188.                                         dump(voice[voic], TRUE);
  1189.                                         break;
  1190.  
  1191.                                   case 9:       // Scroller Pitch 2
  1192.                                         voice[voic]->pitch2 = Code;
  1193.                                         setind(43,Code-36);   //9
  1194.                                         dump(voice[voic], TRUE);
  1195.                                         break;
  1196.  
  1197.                                   case 10:      // Scroller Decay 1
  1198.                                         voice[voic]->decay1 = Code;
  1199.                                         setind(35,Code);     //10
  1200.                                         dump(voice[voic], TRUE);
  1201.                                         break;
  1202.  
  1203.                                   case 11:      // Scroller Decay 2
  1204.                                         voice[voic]->decay2 = Code;
  1205.                                         setind(44,Code);     //11
  1206.                                         dump(voice[voic], TRUE);
  1207.                                         break;
  1208.  
  1209.                                   case 12:      // Chooser Filter 1
  1210.                                         voice[voic]->filter1 = Code;
  1211.                                         dump(voice[voic], TRUE);
  1212.                                         break;
  1213.  
  1214.                                   case 13:      // Chooser Filter 2
  1215.                                         voice[voic]->filter2 = Code;
  1216.                                         dump(voice[voic], TRUE);
  1217.                                         break;
  1218.  
  1219.                                   case 14:      // Scroller Cut Off 1
  1220.                                         voice[voic]->cutoff1 = Code;
  1221.                                         setind(37,Code);       //14
  1222.                                         dump(voice[voic], TRUE);
  1223.                                         break;
  1224.  
  1225.                                   case 15:      // Scroller Cut Off 2
  1226.                                         voice[voic]->cutoff2 = Code;
  1227.                                         setind(46,Code);       //15
  1228.                                         dump(voice[voic], TRUE);
  1229.                                         break;
  1230.  
  1231.                                   case 16:      // Scroller Res 1
  1232.                                         voice[voic]->res1 = Code;
  1233.                                         setind(38,Code);         //16
  1234.                                         dump(voice[voic], TRUE);
  1235.                                         break;
  1236.  
  1237.                                   case 17:      // Scroller Res 2
  1238.                                         voice[voic]->res2 = Code;
  1239.                                        setind(47,Code);         //17
  1240.                                         dump(voice[voic], TRUE);
  1241.                                         break;
  1242.  
  1243.                                   case 18:      // Scroller EG Level 1
  1244.                                         voice[voic]->eg1level = Code;
  1245.                                         setind(39,Code-64);      //18
  1246.                                         dump(voice[voic], TRUE);
  1247.                                         break;
  1248.  
  1249.                                   case 19:      // Scroller EG Level 2
  1250.                                         voice[voic]->eg2level = Code;
  1251.                                         setind(48,Code-64);    //19
  1252.                                         dump(voice[voic], TRUE);
  1253.                                         break;
  1254.  
  1255.                                   case 20:      // Scroller EG Rate 1
  1256.                                         voice[voic]->eg1rate = Code;
  1257.                                         setind(40,Code);           //20
  1258.                                         dump(voice[voic], TRUE);
  1259.                                         break;
  1260.  
  1261.                                   case 21:      // Scroller EG Rate 2
  1262.                                         voice[voic]->eg2rate = Code;
  1263.                                         setind(49,Code);        //21
  1264.                                         dump(voice[voic], TRUE);
  1265.                                         break;
  1266.  
  1267.                                   case 22:      // Scroller Pitch EG Level
  1268.                                         voice[voic]->peglevel = Code;
  1269.                                         setind(36,Code-72);     //22
  1270.                                         dump(voice[voic], TRUE);
  1271.                                         break;
  1272.  
  1273.                                   case 23:      // Scroller Pitch EG Rate
  1274.                                         voice[voic]->pegrate = Code;
  1275.                                         setind(45,Code);        //23
  1276.                                         dump(voice[voic], TRUE);
  1277.                                         break;
  1278.  
  1279.                                   case 24:      // CheckBox Polyphonic
  1280.                                         if (Code) voice[voic]->poly=TRUE;
  1281.                                         else voice[voic]->poly=FALSE;
  1282.                                         dump(voice[voic], TRUE);
  1283.                                         break;
  1284.  
  1285.                                   case 25:      // Chooser Alt Group
  1286.                                         voice[voic]->group= Code;
  1287.                                         dump(voice[voic], TRUE);
  1288.                                         break;
  1289.  
  1290.                                   case 26:      // Chooser Output Assign
  1291.                                         voice[voic]->output = Code;
  1292.                                         dump(voice[voic], TRUE);
  1293.                                         break;
  1294.  
  1295.                                   case 27:      // Scroller Indv Level
  1296.                                         voice[voic]->indlevel = Code;
  1297.                                         setind(41,Code);        //27
  1298.                                         dump(voice[voic], TRUE);
  1299.                                         break;
  1300.  
  1301.                                   case 32:
  1302.  
  1303.                                     if (Code == 1)
  1304.                                     {
  1305.                                        
  1306.                                        SetGadgetAttrs(gMain_Gadgets[3], gMain_window, NULL,
  1307.                                        GA_Disabled, TRUE,
  1308.                                        TAG_DONE);
  1309.  
  1310.                                        SetGadgetAttrs(gMain_Gadgets[29], gMain_window, NULL,
  1311.                                        GA_Text, "Off",
  1312.                                        TAG_DONE);
  1313.                                     }
  1314.                                     else
  1315.                                     {
  1316.                                        SetGadgetAttrs(gMain_Gadgets[3], gMain_window, NULL,
  1317.                                        GA_Disabled, FALSE,
  1318.                                        TAG_DONE);
  1319.  
  1320.                                        GetAttr(LISTBROWSER_SelectedNode, gMain_Gadgets[ 3 ], (ULONG *)&node);
  1321.  
  1322.                                         if (node)
  1323.                                         {
  1324.                                         GetListBrowserNodeAttrs(node, LBNCA_Text, &nodename,
  1325.                                             TAG_END);
  1326.  
  1327.                                         SetGadgetAttrs(gMain_Gadgets[29], gMain_window, NULL,
  1328.                                         GA_Text, nodename,
  1329.                                         TAG_DONE);
  1330.                                         }
  1331.                                     }
  1332.                                     break;
  1333.  
  1334.                                 case 51:
  1335.  
  1336.                                   reqFile(voice[voic]);
  1337.                                 break;
  1338.  
  1339.                                 case 52:
  1340.                                 voice[voic]->dest = Code;
  1341.                                 sprintf(buff,"I%02ld",Code);
  1342.                                 setindCH(53,buff);      //52
  1343.                                 break;
  1344.  
  1345.                                 case 53:
  1346.                                 break;
  1347.  
  1348.                                 case 54:
  1349.                                 voic=Code;
  1350.  
  1351.                                 if(!voice[voic]) initvoice(voice,voic);
  1352.  
  1353.                                 setsliders(voice[voic]);
  1354.                                 setind(55,Code);
  1355.                                  break;
  1356.  
  1357.                                 case 56:
  1358.                                 initvoice(voice,voic);
  1359.                                 setsliders(voice[voic]);
  1360.                                 break;
  1361.  
  1362.                                 case 57:
  1363.                                 randomsound(voice, voic, TRUE, TRUE, TRUE, TRUE, do_osc);
  1364.                                 setsliders(voice[voic]);
  1365.                                 dump(voice[voic], TRUE);
  1366.                                 break;
  1367.  
  1368.                                 case 58:        //    wave
  1369.                                 randomsound(voice, voic, FALSE, FALSE, FALSE, TRUE, do_osc);
  1370.                                 setsliders(voice[voic]);
  1371.                                 dump(voice[voic], TRUE);
  1372.                                    break;
  1373.                                 case 59:        // pitch
  1374.                                 randomsound(voice, voic, FALSE, TRUE, FALSE, FALSE, do_osc);
  1375.                                 setsliders(voice[voic]);
  1376.                                 dump(voice[voic], TRUE);
  1377.                                     break;
  1378.                                 case 60:        // filter
  1379.                                 randomsound(voice, voic, TRUE, FALSE, FALSE, FALSE, do_osc);
  1380.                                 setsliders(voice[voic]);
  1381.                                 dump(voice[voic], TRUE);
  1382.                                     break;
  1383.                                 case 61:       // pan/decay
  1384.                                 randomsound(voice, voic, FALSE, FALSE, TRUE, FALSE, do_osc);
  1385.                                 setsliders(voice[voic]);
  1386.                                 dump(voice[voic], TRUE);
  1387.                                     break;
  1388.                                 case 62:         // osc 1
  1389.                                    if (Code) do_osc+=1;
  1390.                                    else do_osc-=1;
  1391.  
  1392.                                     break;
  1393.                                 case 63:        // osc2
  1394.                                    if (Code) do_osc+=2;
  1395.                                    else do_osc-=2;
  1396.                                     break;
  1397.  
  1398.                                 case 64:
  1399.  
  1400.                                 for(i=0; i<96; i++)
  1401.                                 {
  1402.                                     if(!voice[i]) initvoice(voice,i);
  1403.                                     randomsound(voice, i, TRUE, TRUE, TRUE, TRUE, do_osc);
  1404.                                     setsliders(voice[i]);
  1405.                                     SetGadgetAttrs(gMain_Gadgets[54], gMain_window, NULL,
  1406.                                     SCROLLER_Top, i,
  1407.                                     TAG_DONE);
  1408.                                     setind(55,i);
  1409.                                     sprintf(buff,"RND %02d  ",i);
  1410.                                     strcpy(voice[i]->name,buff);
  1411.                                     SetGadgetAttrs(gMain_Gadgets[5], gMain_window, NULL,
  1412.                                     STRINGA_TextVal, voice[i]->name,
  1413.                                     TAG_DONE);
  1414.                                     voice[i]->dest = i;
  1415.                                     dump(voice[i], TRUE);
  1416.                                 }
  1417.  
  1418.                                 break;
  1419.  
  1420.           //-----------------------------------------------------------------------------------------------
  1421.                                 }
  1422.                                 break;
  1423.  
  1424.                         }            
  1425.                   }
  1426.                 }
  1427.           }
  1428.         }
  1429.  
  1430.         for(i=0; i<96;i++)
  1431.         {
  1432.           if (voice[i])  FreeVec(voice[i]);
  1433.         }
  1434.         closeserial();
  1435.         close_all();
  1436.   }
  1437.   return(0);
  1438. }
  1439.  
  1440. void close_all( void )
  1441. {
  1442.   FreeChooserList(&C_Filter1_list);
  1443.   FreeRadioList(&R_Filter1_list);
  1444.   FreeClickTabList(&CT_Filter1_list);
  1445.   FreeListBrowserList(&LB_Filter1_list);
  1446.     FreeListBrowserList(&Wavelist);
  1447.     FreeListBrowserList(&Wavelist2);
  1448.  
  1449.   FreeChooserList(&C_Alternate_list);
  1450.   FreeRadioList(&R_Alternate_list);
  1451.   FreeClickTabList(&CT_Alternate_list);
  1452.   FreeListBrowserList(&LB_Alternate_list);
  1453.   FreeChooserList(&C_Output_list);
  1454.   FreeRadioList(&R_Output_list);
  1455.   FreeClickTabList(&CT_Output_list);
  1456.   FreeListBrowserList(&LB_Output_list);
  1457.   if ( gApp_port )
  1458.         DeleteMsgPort( gApp_port );
  1459.   if ( gDrinfo )
  1460.         FreeScreenDrawInfo( gScreen, gDrinfo);
  1461.   if ( gVi )
  1462.         FreeVisualInfo( gVi );
  1463.   if ( gScreen )
  1464.         UnlockPubScreen(0, gScreen );
  1465.   if ( gWindow_object )
  1466.   {
  1467.         DisposeObject( gWindow_object );
  1468.         gWindow_object = NULL;
  1469.         gMain_window = NULL;
  1470.   }
  1471. }
  1472.  
  1473. void setind(int display, int level)
  1474. {
  1475.     char buff[10];
  1476.  
  1477.     sprintf(buff,"%d",level);
  1478.  
  1479.     SetGadgetAttrs(gMain_Gadgets[display], gMain_window, NULL,
  1480.                     GA_Text, buff,
  1481.                     TAG_DONE);
  1482. }
  1483.  
  1484. void setindCH(int display, char *string)
  1485. {
  1486.     SetGadgetAttrs(gMain_Gadgets[display], gMain_window, NULL,
  1487.                     GA_Text, string,
  1488.                     TAG_DONE);
  1489. }
  1490.  
  1491. int openserial(char *devicename)
  1492. {
  1493.     UWORD status;  
  1494.     UBYTE *user;
  1495.         if (SerialMP=CreatePort(NULL,NULL) )
  1496.         {
  1497.             if (SerialIO=(struct IOExtSer *)CreateExtIO(SerialMP,sizeof(struct IOExtSer)) )
  1498.             {
  1499.                 if (OpenDevice(devicename,0L,(struct IORequest *)SerialIO,0))
  1500.                 {
  1501.                     printf("\n%s did not open",devicename);
  1502.                     return 0;
  1503.                 }
  1504.                 else
  1505.                 {
  1506.                     SerialIO->IOSer.io_Command  = SDCMD_QUERY;
  1507.                     DoIO((struct IORequest *)SerialIO);             /* execute query */
  1508.  
  1509.                     status = SerialIO->io_Status;                    /* store returned status */
  1510.  
  1511.                     SerialIO->IOSer.io_Command  = SDCMD_SETPARAMS;
  1512.                     SerialIO->io_SerFlags &= ~SERF_PARTY_ON;
  1513.                     SerialIO->io_SerFlags|=(SERF_RAD_BOOGIE|SERF_XDISABLED);
  1514.                     SerialIO->io_Baud = 31250;
  1515.                     DoIO((struct IORequest *)SerialIO);
  1516.  
  1517.                 }
  1518.             }
  1519.             else return 1;
  1520.         }
  1521.         else return 2;
  1522. }
  1523.  
  1524. void closeserial(void)
  1525. {
  1526.     if (SerialIO)
  1527.     {
  1528.         CloseDevice((struct IORequest *)SerialIO);
  1529.         DeleteExtIO((struct IORequest *)SerialIO);
  1530.         DeletePort(SerialMP);
  1531.     }
  1532. }
  1533.  
  1534. BOOL sendsysex(char *packet)
  1535. {
  1536.     SerialIO->IOSer.io_Length=126;
  1537.     SerialIO->IOSer.io_Data=(APTR)packet;
  1538.     SerialIO->IOSer.io_Command=CMD_WRITE;
  1539.     if (DoIO((struct IORequest *)SerialIO))
  1540.       return (DOSTRUE);
  1541.     return DOSFALSE;
  1542. }
  1543.  
  1544. void initvoice(struct RYVoice *voice[], int n)
  1545. {
  1546.  
  1547.     if (!voice[n]) voice[n] = AllocVec(sizeof(struct RYVoice),MEMF_CLEAR|MEMF_PUBLIC);
  1548.  
  1549.     voice[n]->src=0;
  1550.     voice[n]->dest=0;
  1551.     voice[n]->level=63;
  1552.  
  1553.     voice[n]->peglevel=72;
  1554.     voice[n]->pegrate=0;
  1555.  
  1556.     voice[n]->output=0;
  1557.     voice[n]->indlevel=63;
  1558.  
  1559.     strcpy(voice[n]->name,"No Name1");
  1560.  
  1561.     voice[n]->wave1=0;
  1562.     voice[n]->wave1level=63;
  1563.     voice[n]->pan1=16;
  1564.     voice[n]->pitch1=36;
  1565.     voice[n]->decay1=63;
  1566.     voice[n]->filter1=0;
  1567.     voice[n]->cutoff1=0;
  1568.     voice[n]->res1=80;
  1569.     voice[n]->eg1level=64;
  1570.     voice[n]->eg1rate=00;
  1571.     voice[n]->sen_level1=0;
  1572.     voice[n]->sen_pitch1=0;
  1573.     voice[n]->sen_eg1=0;
  1574.  
  1575.     voice[n]->wave2=0;
  1576.     voice[n]->wave2level=63;
  1577.     voice[n]->pan2=16;
  1578.     voice[n]->pitch2=36;
  1579.     voice[n]->decay2=63;
  1580.     voice[n]->filter2=0;
  1581.     voice[n]->cutoff2=0;
  1582.     voice[n]->res2=80;
  1583.     voice[n]->eg2level=64;
  1584.     voice[n]->eg2rate=00;
  1585.     voice[n]->sen_level2=0;
  1586.     voice[n]->sen_pitch2=0;
  1587.     voice[n]->sen_eg2=0;
  1588.  
  1589.     voice[n]->group=0;
  1590.     voice[n]->poly=TRUE;
  1591. }
  1592.  
  1593. void dump(struct RYVoice *voice, BOOL midi)
  1594. {
  1595.     int i;
  1596.     int temp=0;
  1597.     char tempb[20];
  1598.     char *name;
  1599.     char buffer[130];
  1600.     char tmp[2];
  1601.     char timp[6];
  1602.     char t;
  1603.     LONG tmp1;
  1604.     LONG sum;
  1605.     LONG loop;
  1606.  
  1607.     GetAttr(STRINGA_TextVal, gMain_Gadgets[ 5 ], (ULONG *)&name);
  1608.                                   strcpy(voice->name,name);
  1609.  
  1610.     checksum = 0;
  1611.  
  1612.  
  1613.     if ((strlen(name))< 8)
  1614.     {
  1615.         for(i=strlen(voice->name); i<8; i++)
  1616.         {
  1617.             voice->name[i] = ' ';
  1618.         }
  1619.     }
  1620.  
  1621.     for(i=0;i< 6; i++)
  1622.     buffer[i] = (char) d_header[i];
  1623.  
  1624.     for(i=0;i< 24; i++)
  1625.     buffer[6+i] = (char) id[i];
  1626.  
  1627.     buffer[30] = (char)voice->src;
  1628.     buffer[31] = (char)voice->dest;
  1629.  
  1630.     assign(buffer, voice->level,32);
  1631.     assign(buffer,voice->peglevel,34);
  1632.     assign(buffer,voice->pegrate,36);
  1633.  
  1634.     temp=(voice->group*10)+voice->output;
  1635.  
  1636.     if (voice->poly) temp+=0x80;
  1637.  
  1638.     assign(buffer,temp,38);
  1639.     assign(buffer,voice->indlevel,40);
  1640.  
  1641.     for(i=0;i<8;i++)
  1642.     {
  1643.         sprintf(timp,"%X",voice->name[i]);
  1644.         buffer[42+(i*2)] = timp[0];
  1645.         buffer[42+1+(i*2)] = timp[1];
  1646.     }
  1647.  
  1648.     assign(buffer,255,58);
  1649.     assign(buffer,255,60);
  1650.     assign(buffer,255,62);
  1651.  
  1652.     assign(buffer,voice->wave1,64);
  1653.     assign(buffer,voice->wave1level,66);
  1654.     assign(buffer,voice->pan1,68);
  1655.     assign(buffer,voice->pitch1,70);
  1656.     assign(buffer,0,72);
  1657.     assign(buffer, voice->decay1,74);
  1658.     assign(buffer, voice->filter1,76);
  1659.     assign(buffer, voice->cutoff1,78);
  1660.     assign(buffer, voice->res1,80);
  1661.     assign(buffer, voice->eg1level,82);
  1662.     assign(buffer, voice->eg1rate,84);
  1663.     assign(buffer, voice->sen_level1,86);
  1664.     assign(buffer, voice->sen_pitch1,88);
  1665.     assign(buffer, voice->sen_eg1,90);
  1666.     assign(buffer,0,92);
  1667.     assign(buffer, voice->wave2,94);
  1668.     assign(buffer, voice->wave2level,96);
  1669.     assign(buffer, voice->pan2,98);
  1670.     assign(buffer, voice->pitch2,100);
  1671.     assign(buffer,0,102);
  1672.     assign(buffer, voice->decay2,104);
  1673.     assign(buffer, voice->filter2,106);
  1674.     assign(buffer, voice->cutoff2,108);
  1675.     assign(buffer, voice->res2,110);
  1676.     assign(buffer, voice->eg2level,112);
  1677.     assign(buffer, voice->eg2rate,114);
  1678.     assign(buffer, voice->sen_level2,116);
  1679.     assign(buffer, voice->sen_pitch2,118);
  1680.     assign(buffer, voice->sen_eg2,120);
  1681.     assign(buffer,0,122);
  1682.  
  1683.     
  1684.  
  1685.     checksum=0;
  1686.     sum=0;
  1687.  
  1688.     for(tmp1=6; tmp1<124; tmp1++)
  1689.     {
  1690.         sum+= buffer[tmp1];
  1691.     }
  1692.  
  1693.  
  1694.         checksum=(UBYTE)(-sum& 0x7f);
  1695.     buffer[124]=checksum;
  1696.     buffer[125]=0xF7;
  1697.  
  1698.     if(!midi)
  1699.     {
  1700.         for(tmp1=0; tmp1<126;tmp1++)
  1701.         {
  1702.             fprintf(voicefile,"%c",buffer[tmp1]);
  1703.         }
  1704.     }
  1705.     else sendsysex(buffer);
  1706. }
  1707.  
  1708. void assign(char *dest, int src, int pos)
  1709. {
  1710.     char tmp[6];
  1711.  
  1712.     sprintf(tmp,"%02X",src);
  1713.     dest[pos] = tmp[0];
  1714.     dest[pos+1]= tmp[1];
  1715. }
  1716.  
  1717. void setsliders(struct RYVoice *voice)
  1718. {
  1719.   char buff[5];
  1720.   SetGadgetAttrs(gMain_Gadgets[52], gMain_window, NULL,
  1721.                     SCROLLER_Top, voice->dest,
  1722.                     TAG_DONE);
  1723.             sprintf(buff,"I%02ld",voice->dest);
  1724.                                 setindCH(53,buff);      //52
  1725.  
  1726.   SetGadgetAttrs(gMain_Gadgets[0], gMain_window, NULL,
  1727.                     SCROLLER_Top, voice->level,
  1728.                     TAG_DONE);
  1729.   SetGadgetAttrs(gMain_Gadgets[22], gMain_window, NULL,
  1730.                     SCROLLER_Top, voice->peglevel,
  1731.                     TAG_DONE);
  1732.                     setind(36,voice->peglevel-72);     //22
  1733.   SetGadgetAttrs(gMain_Gadgets[23], gMain_window, NULL,
  1734.                     SCROLLER_Top, voice->pegrate,
  1735.                     TAG_DONE);
  1736.                       setind(45,voice->pegrate);        //23
  1737.   SetGadgetAttrs(gMain_Gadgets[26], gMain_window, NULL,
  1738.                     CHOOSER_Active, voice->output,
  1739.                     TAG_DONE);
  1740.   SetGadgetAttrs(gMain_Gadgets[27], gMain_window, NULL,
  1741.                     SCROLLER_Top, voice->indlevel,
  1742.                     TAG_DONE);
  1743.                    setind(41,voice->indlevel);        //27
  1744.   SetGadgetAttrs(gMain_Gadgets[1], gMain_window, NULL,
  1745.                     LISTBROWSER_Selected, voice->wave1,
  1746.                     LISTBROWSER_MakeVisible,voice->wave1,
  1747.                     TAG_DONE);
  1748.   SetGadgetAttrs(gMain_Gadgets[2], gMain_window, NULL,
  1749.                     SCROLLER_Top, voice->wave1level,
  1750.                     TAG_DONE);
  1751.   SetGadgetAttrs(gMain_Gadgets[6], gMain_window, NULL,
  1752.                     SCROLLER_Top, voice->pan1,
  1753.                     TAG_DONE);
  1754.    setind(33,voice->pan1-16);  //6
  1755.  
  1756.   SetGadgetAttrs(gMain_Gadgets[8], gMain_window, NULL,
  1757.                     SCROLLER_Top, voice->pitch1,
  1758.                     TAG_DONE);
  1759.    setind(34,voice->pitch1-36);  //8
  1760.   SetGadgetAttrs(gMain_Gadgets[10], gMain_window, NULL,
  1761.                     SCROLLER_Top, voice->decay1,
  1762.                     TAG_DONE);
  1763.           setind(35,voice->decay1);     //10
  1764.   SetGadgetAttrs(gMain_Gadgets[12], gMain_window, NULL,
  1765.                     CHOOSER_Active, voice->filter1,
  1766.                     TAG_DONE);
  1767.   SetGadgetAttrs(gMain_Gadgets[14], gMain_window, NULL,
  1768.                     SCROLLER_Top, voice->cutoff1,
  1769.                     TAG_DONE);
  1770.                    setind(37,voice->cutoff1);       //14
  1771.   SetGadgetAttrs(gMain_Gadgets[16], gMain_window, NULL,
  1772.                     SCROLLER_Top, voice->res1,
  1773.                     TAG_DONE);
  1774.             setind(38,voice->res1);         //16
  1775.   SetGadgetAttrs(gMain_Gadgets[18], gMain_window, NULL,
  1776.                     SCROLLER_Top, voice->eg1level,
  1777.                     TAG_DONE);
  1778.                     setind(39,voice->eg1level-64);      //18
  1779.   SetGadgetAttrs(gMain_Gadgets[20], gMain_window, NULL,
  1780.                     SCROLLER_Top, voice->eg1rate,
  1781.                     TAG_DONE);
  1782.                setind(40,voice->eg1rate);           //20
  1783.   SetGadgetAttrs(gMain_Gadgets[3], gMain_window, NULL,
  1784.                     LISTBROWSER_Selected, voice->wave2,
  1785.                     LISTBROWSER_MakeVisible,voice->wave2,
  1786.                     TAG_DONE);
  1787.   SetGadgetAttrs(gMain_Gadgets[4], gMain_window, NULL,
  1788.                     SCROLLER_Top, voice->wave2level,
  1789.                     TAG_DONE);
  1790.  
  1791.   SetGadgetAttrs(gMain_Gadgets[7], gMain_window, NULL,
  1792.                     SCROLLER_Top, voice->pan2,
  1793.                     TAG_DONE);
  1794.     setind(42,voice->pan2-16);  //7
  1795.   SetGadgetAttrs(gMain_Gadgets[9], gMain_window, NULL,
  1796.                     SCROLLER_Top, voice->pitch2,
  1797.                     TAG_DONE);
  1798.      setind(43,voice->pitch2-36);   //9
  1799.   SetGadgetAttrs(gMain_Gadgets[11], gMain_window, NULL,
  1800.                     SCROLLER_Top, voice->decay2,
  1801.                     TAG_DONE);
  1802.               setind(44,voice->decay2);     //11
  1803.   SetGadgetAttrs(gMain_Gadgets[13], gMain_window, NULL,
  1804.                     CHOOSER_Active, voice->filter2,
  1805.                     TAG_DONE);
  1806.   SetGadgetAttrs(gMain_Gadgets[15], gMain_window, NULL,
  1807.                     SCROLLER_Top, voice->cutoff2,
  1808.                     TAG_DONE);
  1809.              setind(46,voice->cutoff2);       //15
  1810.   SetGadgetAttrs(gMain_Gadgets[17], gMain_window, NULL,
  1811.                     SCROLLER_Top, voice->res2,
  1812.                     TAG_DONE);
  1813.                        setind(47,voice->res2);         //17
  1814.   SetGadgetAttrs(gMain_Gadgets[19], gMain_window, NULL,
  1815.                     SCROLLER_Top, voice->eg2level,
  1816.                     TAG_DONE);
  1817.               setind(48,voice->eg2level-64);    //19
  1818.   SetGadgetAttrs(gMain_Gadgets[21], gMain_window, NULL,
  1819.                     SCROLLER_Top, voice->eg2rate,
  1820.                     TAG_DONE);
  1821.                    setind(49,voice->eg2rate);        //21
  1822.   SetGadgetAttrs(gMain_Gadgets[25], gMain_window, NULL,
  1823.                     CHOOSER_Active, voice->group,
  1824.                     TAG_DONE);
  1825.  
  1826.   SetGadgetAttrs(gMain_Gadgets[5], gMain_window, NULL,
  1827.                     STRINGA_TextVal, voice->name,
  1828.                     TAG_DONE);
  1829.  
  1830.   if (voice->poly)
  1831.   {
  1832.   SetGadgetAttrs(gMain_Gadgets[24], gMain_window, NULL,
  1833.                     CHECKBOX_Checked, TRUE,
  1834.                     TAG_DONE);
  1835.   }
  1836.   else
  1837.   {
  1838.     SetGadgetAttrs(gMain_Gadgets[24], gMain_window, NULL,
  1839.                     CHECKBOX_Checked, FALSE,
  1840.                     TAG_DONE);
  1841.   }
  1842.  
  1843.  
  1844. GetAttr(LISTBROWSER_SelectedNode, gMain_Gadgets[ 1 ], (ULONG *)&node);
  1845.  
  1846.                                         GetListBrowserNodeAttrs(node, LBNCA_Text, &nodename,
  1847.                                             TAG_END);
  1848.  
  1849.                                         SetGadgetAttrs(gMain_Gadgets[28], gMain_window, NULL,
  1850.                                         GA_Text, nodename,
  1851.                                         TAG_DONE);
  1852.  
  1853. GetAttr(LISTBROWSER_SelectedNode, gMain_Gadgets[ 3 ], (ULONG *)&node);
  1854.  
  1855.                                         GetListBrowserNodeAttrs(node, LBNCA_Text, &nodename,
  1856.                                             TAG_END);
  1857.  
  1858.                                         SetGadgetAttrs(gMain_Gadgets[29], gMain_window, NULL,
  1859.                                         GA_Text, nodename,
  1860.                                         TAG_DONE);
  1861.  
  1862. }
  1863.  
  1864. void randomsound(struct RYVoice *voice[], int voic, BOOL filter, BOOL pitch, BOOL decay_pan, BOOL wave, int osc)
  1865. {
  1866.  
  1867.     if(pitch)
  1868.     {
  1869.         voice[voic]->peglevel=rnd_num(144);
  1870.         voice[voic]->pegrate=rnd_num(64);
  1871.     }
  1872.  
  1873.     if ((osc==1) || (osc ==3))
  1874.     {
  1875.         if (wave) voice[voic]->wave1=rnd_num(90);
  1876.  
  1877.         if(decay_pan)
  1878.         {
  1879.             voice[voic]->pan1=rnd_num(32);
  1880.             voice[voic]->decay1=rnd_num(63);
  1881.         }
  1882.  
  1883.         if(pitch)voice[voic]->pitch1=rnd_num(72);
  1884.         
  1885.         if(filter)
  1886.         {
  1887.             voice[voic]->filter1=rnd_num(5);
  1888.             voice[voic]->cutoff1=rnd_num(128);
  1889.             voice[voic]->res1=rnd_num(100);
  1890.             voice[voic]->eg1level=rnd_num(128);
  1891.             voice[voic]->eg1rate=rnd_num(64);
  1892.         }
  1893.  
  1894.         voice[voic]->sen_level1=rnd_num(7);
  1895.         voice[voic]->sen_pitch1=rnd_num(7);
  1896.         voice[voic]->sen_eg1=rnd_num(7);
  1897.     }
  1898.  
  1899.     if((osc==2) || (osc==3))
  1900.     {
  1901.         if(wave)voice[voic]->wave2=rnd_num(90);
  1902.  
  1903.         if(decay_pan)
  1904.         {
  1905.         voice[voic]->pan2=rnd_num(32);
  1906.         voice[voic]->decay2=rnd_num(63);
  1907.         }
  1908.         if (pitch) voice[voic]->pitch2=rnd_num(72);
  1909.         
  1910.         if(filter)
  1911.         {
  1912.         voice[voic]->filter2=rnd_num(5);
  1913.         voice[voic]->cutoff2=rnd_num(128);
  1914.         voice[voic]->res2=rnd_num(100);
  1915.         voice[voic]->eg2level=rnd_num(128);
  1916.         voice[voic]->eg2rate=rnd_num(64);
  1917.         }
  1918.  
  1919.         voice[voic]->sen_level2=rnd_num(7);
  1920.         voice[voic]->sen_pitch2=rnd_num(7);
  1921.         voice[voic]->sen_eg2=rnd_num(7);
  1922.     }
  1923.  
  1924.     if (rnd_num(64) < 32) voice[voic]->poly=TRUE;
  1925.     else    voice[voic]->poly=FALSE;
  1926.  
  1927. }
  1928.  
  1929. int rnd_num(int max)
  1930. {
  1931. int i;
  1932. LONG j;
  1933. double k;
  1934.  
  1935.         srand(rand()*rand());
  1936.         j=rand();
  1937.         k=(double)j/2147483647;
  1938.         j=(LONG)(k*max);
  1939.  
  1940. return (int)j;
  1941. }
  1942.  
  1943. BOOL  reqFile(struct RYVoice *voice)
  1944. {
  1945.     struct FileRequester *fr;
  1946.     char filename[127];
  1947.     
  1948.  
  1949.     if (fr = (struct FileRequester *)
  1950.             AllocAslRequest(ASL_FileRequest, frtags))
  1951.         {
  1952.             if (AslRequest(fr, NULL))
  1953.             {
  1954.                 strcpy(filename, fr->rf_Dir);
  1955.                 AddPart(filename,fr->rf_File, 100);
  1956.                 FreeAslRequest(fr);
  1957.  
  1958.                 voicefile = fopen(filename,"wb");
  1959.                 dump(voice, FALSE);
  1960.                 fclose(voicefile);
  1961.                 return TRUE;
  1962.             }
  1963.         }
  1964.  
  1965.                 FreeAslRequest(fr);
  1966.                 return FALSE;
  1967.  
  1968. }
  1969.  
  1970.  
  1971.  
  1972.        
  1973.      
  1974.     
  1975.      
  1976.        
  1977.       
  1978.         
  1979.        
  1980.       
  1981.         
  1982.                              
  1983.